home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 45975 / 45975.xpi / modules / cnlprefs.js < prev   
Text File  |  2009-11-23  |  3KB  |  83 lines

  1. /*
  2.  * Copyright (c) 2009 Bui Viet Thanh (thanhbv@gmail.com).
  3.  *
  4.  * This file is part of clicknlearn.
  5.  *
  6.  * clicknlearn is free software: you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation, either version 3 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * clicknlearn is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with clicknlearn.  If not, see <http://www.gnu.org/licenses/>.
  18.  */
  19.  
  20. let EXPORTED_SYMBOLS = ["CNL_Prefs"];
  21.  
  22. const Cc = Components.classes;
  23. const Ci = Components.interfaces;
  24.  
  25. /**
  26.  * See prefarray.js in http://mozilla.doslash.org/prefutils/
  27.  * Ohhhhhh! After almost finished, I discover that resource://weave/ext/Preferences.js
  28.  * has implemented a very powerful solution for storing preferences
  29.  */
  30. var CNL_Prefs = new function(){
  31.     this.prefBranch = Components.classes["@mozilla.org/preferences-service;1"]
  32.                 .getService(Components.interfaces.nsIPrefService)
  33.                 .getBranch("extensions.clicknlearn.dicservices.");
  34.  
  35.     this.setDicsArrayPref = function(arr) {
  36.         this.prefBranch.deleteBranch("");
  37.         for(var i in arr)
  38.             for(j in arr[i]){
  39.                 let string = Cc["@mozilla.org/supports-string;1"].
  40.                        createInstance(Ci.nsISupportsString);
  41.                 string.data = arr[i][j];
  42.                 this.prefBranch.setComplexValue(i + "." + j, Ci.nsISupportsString, string);
  43.             }
  44.     }
  45.  
  46.     this._getDicsArrayPref = function() {
  47.         var result = [];
  48.         var items = this.prefBranch.getChildList("", {});
  49.         for(var i in items) {
  50.             var path = items[i].split(".");
  51.             var lastIdx = path.length - 1;
  52.             var node = result;
  53.             for(var j in path) {
  54.                 if(!(path[j] in node)) {
  55.                     if(j != lastIdx)
  56.                         node[path[j]] = [];
  57.                     else
  58.                         node[path[j]] = this.prefBranch.getComplexValue(items[i], Ci.nsISupportsString).data;
  59.                 }
  60.                 node = node[path[j]];
  61.             }
  62.         }
  63.         return result;
  64.     }
  65.     /**
  66.      * see http://code.google.com/p/clicknlearn/issues/detail?id=19#c5
  67.      */
  68.     this.getDicsArrayPref = this._getDicsArrayPref;/*function() {
  69.         var dicts = this._getDicsArrayPref();
  70.         if(dicts.length == 0)
  71.             dicts =
  72.             [['true', 'tratu.vn', 'http://tratu.vn/dispatchaddon.php?dict=en_vn&title=',
  73.                 '<i>Bß║ín ─æang tra tß╗½', '']
  74.             ,['true', 'edictx.com', 'http://edictx.com/edictx/?dict=1&mode=addon&word=',
  75.                 ' was not found!<', '']
  76.             ,['true', 'tudientiengviet.net', 'http://www.tudientiengviet.net/get.php?mode=quickdict&dict=en-vi&word=',
  77.                 'C├íc tß╗½ t╞░╞íng tß╗▒: <br><ul>', '']
  78.             ,['true', 'vdict.com', 'http://vdict.com/fsearch.php?dictionaries=eng2vie_vie2eng_foldoc&word=',
  79.                 ' <!-- Database --><!-- Database --><!-- Database -->Not Found.', '']];
  80.         return dicts;
  81.     }*/
  82. }
  83.